#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>

#define BUFSIZE	1024

/*
 * 父子进程之间，通过管道的方式进行通信
 * */
int main(int argc, char **argv)
{
	int pd[2];
	pid_t pid;
	int len;
	char buf[BUFSIZE];

	if(pipe(pd) < 0){
		perror("pipe()");
		exit(1);
	}
	
	pid = fork();
	if(pid == 0){		// 子进程
		close(pd[1]);	// 关闭写端
		len = read(pd[0], buf, BUFSIZE);
		printf("pid:%d, conlstext:%s",getpid(),buf);
		write(1, buf, len);
		close(pd[0]);	// 读完以后，关闭读端
		exit(0);
	} else {			// 父进程
		close(pd[0]);	// 关闭读端
		write(pd[1], "Hello!\n", 7);
		close(pd[1]);	// 写完以后，关闭写端
		wait(NULL);		// 收尸
		exit(0);
	}

	exit(0);
}
